#include <iostream>
using namespace std;

// 1. 引用作为重载条件
void func(int &a) {
  cout << "fun(int &a) 的调用" << endl;
}

void func(const int &a) {
  cout << "fun(const int &a) 的调用" << endl;
}

// 2. 函数重载碰到默认参数
void func2(int a) {
  cout << "func2(int a) 的调用" << endl;
}

void func2(int a, int b = 10) {
  cout << "func2(int a, int b) 的调用" << endl;
}

int main(int argc, char const *argv[])
{
  int a = 10;

  // func(a); // 调用无const
  // func(10);  // 调用const
  /*
  2. 函数重载碰到默认参数

  call to 'func2' is ambiguous
  有多个 重载函数 "func2" 实例与参数列表匹配: -- 函数 "func2(int a)" -- 函数 "func2(int a, int b = 10)" -- 参数类型为:  (int)
  */
  // func2(10);  // 当函数重载碰到默认参数，出现二义性

  return 0;
}